HTMLify
script.js
Views: 4 | Author: cody
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | const cards = document.querySelectorAll(".card"); let matched = 0; let cardOne, cardTwo; let disableDeck = false; function flipCard({target: clickedCard}) { if(cardOne !== clickedCard && !disableDeck) { clickedCard.classList.add("flip"); if(!cardOne) { return cardOne = clickedCard; } cardTwo = clickedCard; disableDeck = true; let cardOneImg = cardOne.querySelector(".back-view img").src, cardTwoImg = cardTwo.querySelector(".back-view img").src; matchCards(cardOneImg, cardTwoImg); } } function matchCards(img1, img2) { if(img1 === img2) { matched++; if(matched == 8) { setTimeout(() => { return shuffleCard(); }, 1000); } cardOne.removeEventListener("click", flipCard); cardTwo.removeEventListener("click", flipCard); cardOne = cardTwo = ""; return disableDeck = false; } setTimeout(() => { cardOne.classList.add("shake"); cardTwo.classList.add("shake"); }, 400); setTimeout(() => { cardOne.classList.remove("shake", "flip"); cardTwo.classList.remove("shake", "flip"); cardOne = cardTwo = ""; disableDeck = false; }, 1200); } function shuffleCard() { matched = 0; disableDeck = false; cardOne = cardTwo = ""; let arr = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]; arr.sort(() => Math.random() > 0.5 ? 1 : -1); cards.forEach((card, i) => { card.classList.remove("flip"); let imgTag = card.querySelector(".back-view img"); imgTag.src = `images/img-${arr[i]}.png`; card.addEventListener("click", flipCard); }); } shuffleCard(); cards.forEach(card => { card.addEventListener("click", flipCard); }); |